home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 1.iso / DEMON / GRAPHICS / PROCESS.ARC / !Process / !Guide < prev    next >
Text File  |  1993-07-28  |  36KB  |  957 lines

  1.  
  2.                                    !Process
  3.                           ===========================
  4.                           256 colour image processing
  5.                                       by
  6.                           Henrik Bjerregaard Pedersen
  7.  
  8.  
  9.    About !Process
  10.   ================
  11.    !Process is a 256-colour sprite processing/manipulation program.
  12.    It enables you to manipulate 256-colour sprites in a variety of ways,
  13.  including noise-removal, sharpening, smoothening, inverting, colour
  14.  separation, conversion to black/white or greytones, edge-detection and more.
  15.  Besides that, !Process also includes some of the features found in !Paint or
  16.  other basic drawing packages.
  17.  
  18.    The following is only a brief summary of the features of !Process. The
  19.  number of ways you can distort/alter/manipulate an image are endless, and
  20.  would therefor require a RATHER large !Help-file to describe in details.
  21.    The best (and most amusing) way to discover the possibilities in (and the
  22.  limits of) !Process, is to load an image and simply try the different
  23.  operations one by one. However, I strongly recommend that you read this file,
  24.  otherwise you may have trouble with some of the features.
  25.  
  26.    Problems
  27.   ==========
  28.    Whenever possible, you should ensure that the images you load into Process
  29.  are created without palette or mask, and that the spritefile contains only
  30.  one sprite.
  31.  
  32.    Vocabulary
  33.   ============
  34.    Source image      ... the image from which pixels/information is READ.
  35.    Destination image ... the image to which pixels/information is WRITTEN.
  36.    Colour component  ... a value in the range 0-255, describing the amount of
  37.                          either RED, GREEN or BLUE. 0 is nothing, 255 is full.
  38.    Kernel            ... a 3x3 matrix which is multiplied with the colour
  39.                          components of a center pixel and its 8 neighbours.
  40.                          The average of the 9 elements of the kernel is
  41.                          calculated, and this becomes the colour of the center
  42.                          pixel.
  43.    Image viewer      ... any of the (from two to nine) image windows.
  44.  
  45.    Starting
  46.   ==========
  47.    Double click on the !Process-icon, and the program installs itself on the
  48.  iconbar.
  49.    !Process will claim approx. 160k as long as no image is loaded. After
  50.  loading an image, the wimpslot will be increased with at least twice the size
  51.  of the spritefile.
  52.  
  53.    Stopping
  54.   ==========
  55.    Select the option Quit from the iconbar menu.
  56.    If you end up in an endless loop of error messages, you can in most cases
  57.   exit the program by pressing DELETE while clicking on the OK icon in the
  58.   error box.
  59.  
  60.    Loading
  61.   =========
  62.    Drag as spritefile containing a 256 colour sprite as the first sprite to the
  63.  iconbar icon, and it will be loaded and will appear in a window.
  64.    Click MENU when the mouse is inside this window, and the main menu appears.
  65.    Process will also load AIM files, Clear files (in 256 greytones) and sprites
  66.  with a 256 entry greyscaled palette.
  67.    After applying a filter/effect the processed image will appear in another
  68.  window. If you drag a spritefile to either of these windows, !Process will
  69.  attempt to load the file, but will fail if the first sprite in the file isn't
  70.  the same size and in the same mode as the original, or if the file has a
  71.  different size than the original.
  72.    Please note that !Process ignores the palette of the sprite, and simply uses
  73.  the default 256 colour palette.
  74.  
  75.    Printing
  76.   ==========
  77.    This isn't what !Process is best at. In fact, it doesn't print at all, so
  78.  what you'll need to do is to save the image (either to disc or directly to
  79.  !Paint) and then use !Paints printing facilities in conjunction with a
  80.  RISC OS PDriver to get your piece of art on paper.
  81.  
  82.    Greyscaled images
  83.   ===================
  84.    !Process accepts 3 types of greyscaled images:
  85.  
  86.    AIM (256x256 pixels, 8 bpp, always greyscaled)
  87.    Clear (8 bpp, greyscaled palette)
  88.    Sprites (with a palette with 256 greyscaled entries).
  89.  
  90.    Beside these, Process can convert any loaded colour sprite to 8 bpp
  91.  greytones.
  92.    Some of the operations provided by Process are meaningless when applied to
  93.  a greyscaled image (eg RGB separation, Greyscale conversion etc.). In these
  94.  cases the operation will be inaccesible/shaded in the menu.
  95.  
  96.    Options
  97.   =========
  98.    When started, !Process reads the systemvariable Process$Options which may
  99.  contain the following options:
  100.  
  101.          Name        Meaning
  102.         -------------------------------------------------------------
  103.          max2        Sets the number of copies of the image !Process
  104.          max3        creates when a file is loaded.
  105.          max4  etc   Minimum is 2, maximum is 9. If you don't set max
  106.          max9        or set it to an illegal value, max4 is used.
  107.  
  108.          swap        Automatic swapping on.
  109.  
  110.          dma         Disable DMA during lengthy calculations.
  111.  
  112.          tools       Show toolbox.
  113.  
  114.    To perform RGB separation max4 is needed, to perform CMYK separation max5
  115.  is needed.
  116.  
  117.    The system variable Process$WindowTitle holds the template string for the
  118.  text in the titlebar of the image viewers.
  119.    The variable is set in !Process.!Run, and may be altered to include any of
  120.  the given pieces of information:
  121.  
  122.          Arg       Substituted with
  123.          --------------------------
  124.          %%0       "Process"
  125.          %%1       The name (full path) of the sprite file
  126.          %%2       The name (last part) of the sprite file
  127.          %%3       The name of the sprite
  128.          %%4       The mode in which the sprite was created
  129.          %%5       Size X of sprite (pixels)
  130.          %%6       Size Y of sprite (pixels)
  131.          %%7       The image viewer's number (1 - max)
  132.          %%8       Zoom factor X
  133.          %%9       Zoom factor Y
  134.  
  135.    Maps
  136.   ======
  137.    Maps are tables translating one colour to another. 256-colour images use one
  138.  byte per pixel, so mapping is simply done using a 256-bytes table, so that a
  139.  byte with value n is translated into the n'th entry in the table.
  140.    Many of the operations in !Process are performed using maps, to name a few:
  141.  Invert, Add colour, RGB filter, Translate, Greytones, Brighten, Stretch
  142.  histogram, Equalize histogram, Expand/Reduce range etc.
  143.    It is possible to create your own map and apply it to the loaded image. If
  144.  you drag a 256-bytes Data-file (filetype &FFD) to any of the image viewers,
  145.  the file will be loaded and used as a map on that particular image.
  146.    You can edit the BASIC-program GenMap to suit your own purposes.
  147.  
  148.    The colour selector
  149.   =====================
  150.    The colour selector is a window that pops up whenever a selected operation
  151.  needs a colour as input. The window contains three slidebars, Red, Green and
  152.  Blue which can be used to select the colour, which will be shown to the right
  153.  of the slidebars. The five icons at the bottom of the window are:
  154.  
  155.    Pick        Click on this and you can select a colour by clicking
  156.                SELECT in the source window.
  157.    Black       Sets all three slidebars to 0 (=black).
  158.    White       Sets all three slidebars to full (=white).
  159.    Cancel      Abort the operation/close the window.
  160.    OK          Apply the filter/effect/operation or close the window.
  161.  
  162.    If you click ADJUST on either of the slidebars, all three bars will be moved.
  163.    The palette in the right side of the image can be used to select any of the
  164.  256 default colours used in 8 bpp modes.
  165.  
  166.    The grey value selector
  167.   =========================
  168.    This is exactly the same as the colour selector, except that you only use a
  169.  single slidebar to select the colour/grey value.
  170.  
  171.    The windows
  172.   =============
  173.    The two main windows in !Process are the source and destination windows.
  174.    The source window can be identified by the toolbox, the destination window
  175.  by the pane window with the arrows.
  176.  
  177.    The toolbox
  178.   =============
  179.    The toolbox contains icons for various of the most frequently used
  180.    operations, such as zoom, pan, copy image, set colour etc. Most operations
  181.  can be aborted by selecting another operation or by clicking ADJUST on the
  182.  selected icon. From top to bottom, left to right, the icons are:
  183.  
  184.       Select area
  185.       -----------
  186.       This works exactly as the menu option Misc.Image.Select area.
  187.  
  188.       Use selected area
  189.       -----------------
  190.       If this icon is set (slabbed inwards) only the selected area of the
  191.       source image will be processed. If an area is selected and used,
  192.       pressing MENU over this icon will open a window containing icons to
  193.       control the selected area. These icons work in the same way as the
  194.       sub menu to the menu option Image.Select area.
  195.  
  196.       Copy to destination
  197.       -------------------
  198.       This copies the source image (or the selected part of the source image)
  199.       to the destination image.
  200.  
  201.       Copy from destination
  202.       ---------------------
  203.       The reverse of 'Copy to destination'.
  204.  
  205.       Calculate histogram
  206.       -------------------
  207.       Calculate and display the histogram of the source image.
  208.  
  209.       Open RGB colour selector
  210.       ------------------------
  211.  
  212.       Swap images
  213.       -----------
  214.       Swap source and destination images.
  215.  
  216.       Zoom
  217.       ----
  218.       When this is selected, you can enlarge a portion of the image simply by
  219.       dragging a box in the source image window. Click MENU over this icon to
  220.       open a window with 8 preset zoom factors.
  221.  
  222.       Painting tools
  223.       --------------
  224.       Click MENU over this to reveal the 8 painting tools:
  225.             Pencil
  226.             Filled rectangle
  227.             Rectangle
  228.             Filled circle
  229.             Circle outline
  230.             Lines
  231.             Flood fill
  232.             Global replace
  233.             Spraycan
  234.             Triangle fill
  235.             Triangle
  236.             Parallelogram fill
  237.             Parallelogram outline
  238.             Ellipse fill
  239.             Ellipse outline
  240.             Smooth line
  241.  
  242.       Note that the painting tools write to the source image, NOT to the
  243.       destination image.
  244.  
  245.       Pan
  246.       ---
  247.       Simple, really.
  248.  
  249.    The menus
  250.   ===========
  251.  
  252.       The icon bar menu
  253.       =================
  254.  
  255.       Info
  256.       ----
  257.       ...with the usual program info window.
  258.  
  259.       Views.Tidy
  260.       ----------
  261.       Tries ever so hard to tidy the image viewers.
  262.  
  263.       Views.----
  264.       ----------
  265.       A list of all the image viewers.
  266.  
  267.       Create image
  268.       ------------
  269.       Creates a new blank image.
  270.  
  271.       Drop file
  272.       ---------
  273.  
  274.       Quit
  275.       ----
  276.  
  277.  
  278.       The main menu
  279.       =============
  280.  
  281.       Miscellaneous.Options.Automatic swap
  282.       ------------------------------------
  283.       If this options is selected, the source and destination image will be
  284.       swapped automatically after any operation has been applied to the image.
  285.  
  286.       Miscellaneous.Options.Disable DMA
  287.       ---------------------------------
  288.       If this option is selected, the sound and video DMA will be disabled
  289.       while !Process is processing an image. In hi-res modes on an ARM2 this
  290.       can increase processing-speed with as much 100% or more.
  291.  
  292.       Miscellaneous.Options.Show toolbox
  293.       ----------------------------------
  294.       If this option is selected, a toolbox will appear on the left side of the
  295.       source image window, and a pane window appears on the left side of the
  296.       destination image window.
  297.  
  298.       Miscellaneous.Options.Normal panning
  299.       ------------------------------------
  300.       Switches between the two different types of panning.
  301.  
  302.       Miscellaneous.Options.Display in greytones
  303.       ------------------------------------------
  304.       Displays the images (if they are in colour) in greytones.
  305.       Greyscaled image can also be shown in colour, by deselecting this option.
  306.  
  307.       Miscellaneous.Edit pencil/spraycan
  308.       ----------------------------------
  309.       Select this to set the shape/size of the pencil tool or the size/
  310.       intensity of the spraycan.
  311.  
  312.       Miscellaneous.Plot type
  313.       -----------------------
  314.       This enables you to select which plot action the painting tools should
  315.       use. The default is Set, which means plot the selected colour. The other
  316.       possible plot actions are:
  317.             OR          OR the colour in the image with the selected colour.
  318.             AND         AND ......
  319.             EOR         EOR ......
  320.             Invert      Invert the colour in the image (ignore the selected
  321.                          colour).
  322.             Don't plot  Speaks for itself, doesn't it?
  323.             AND NOT     AND the colour in the image with the inverse of the
  324.                         selected colour.
  325.             OR NOT      OR ......
  326.       The plot type affects all the painting tools except Spraycan, Flood fill
  327.       and Global replace.
  328.  
  329.       Miscellaneous.Reload last
  330.       -------------------------
  331.       This enables you to reload the last saved image (for that particular
  332.       image viewer). In some cases you might experience an error like
  333.       'Not enough room in spritearea'. This will typically happen if the image
  334.       you are trying to reload has a palette, as !Process stores the images
  335.       without palette. There simply isn't room for the extra palette data.
  336.  
  337.  
  338.       Image.Image info
  339.       ----------------
  340.       Leads to a window with image info.
  341.  
  342.  
  343.       Image.Convert to greyscale
  344.       --------------------------
  345.       Converts the image to 256 greytones. This cannot be reversed.
  346.  
  347.       Image.Copy source image
  348.       -----------------------
  349.       Selecting this option will copy the source image to the destination
  350.       image.
  351.  
  352.       Image.Select area
  353.       -----------------
  354.       This entry allows you to select a part of the image. Almost all
  355.       operations on the image will only have effect in the selected area.
  356.       Select the option, then click SELECT in one corner of the rectangle you
  357.       wish to select and click SELECT again in the other corner.
  358.       You can abort the cutting by clicking MENU.
  359.       If an area already has been selected, it is possible to adjust the
  360.       position/size of the area using the options in the sub-menu to this entry.
  361.              Extend top/bottom/right/left will move to appropiate side of
  362.              the rectangle to the top/bottom/right side/left side of the
  363.              full image.
  364.              Top/bottom/right/left neighbour will set the rectangle to an
  365.              area with the same width/height as before, but positioned
  366.              above/below/to the right of/to the left of the previous area,
  367.              so that no pixels overlap.
  368.  
  369.       Image.Clear area
  370.       ----------------
  371.       This will reset the selected part of the image to the full image.
  372.  
  373.       Image.Use full image
  374.       --------------------
  375.       If this option is selected (ticked), the full image is be used.
  376.  
  377.       Image.Use selected area
  378.       -----------------------
  379.       If this option is selected, only the selected part of the image will be
  380.       affected by the processing.
  381.  
  382.  
  383.       Range.Reduce range
  384.       ------------------
  385.       This uses a simple algorithme to reduce the range of the colours in the
  386.       source image. All colours are moved towards a boring greytone (red, green
  387.       and blue = 128).
  388.  
  389.       Range.Expand range
  390.       ------------------
  391.       All colours are moved away from the greytone mentioned above.
  392.  
  393.       Range.Calculate histogram
  394.       -------------------------
  395.       This calculates and displays the colour histogram of the image.
  396.       There will almost always be at least a small amount of both red, green
  397.       and blue in all images, even after the image has been thru e.g. a blue
  398.       filter. This is due to the fact that the bottom two bits of each byte is
  399.       common to the three colour components.
  400.  
  401.       Range.Stretch
  402.       -------------
  403.       Stretches the colour range of the image. This will stretch a selected
  404.       part of the colour histogram so that this part fills the entire range.
  405.       If a colour component is outside the selected part it becomes either 0
  406.       (if below) or 255 (=full, if above).
  407.       Selecting a part of the histogram is done using the lowered rectangle
  408.       below the histogram. Clicking ADJUST in this sets the upper limit,
  409.       clicking SELECT sets the lower limit.
  410.  
  411.       Range.Equalize
  412.       --------------
  413.       Histogram equalisation. This will attempt to equalize the histogram so
  414.       that there is a (roughly) equal number of pixels in each of the possible
  415.       shades.
  416.  
  417.       Range.Transfer median
  418.       ---------------------
  419.       Calculates the mean colour of the image, and transfers it to the RGB
  420.       colour selector. This is especially useful if you want to convert a
  421.       colour image to greytones, as the mean colour will ensure a reasonably
  422.       good conversion.
  423.  
  424.       Range.Colour correction
  425.       -----------------------
  426.       Uses one of three algorithems to perform colour-correction. The curve
  427.       shows 'New colour' vs 'Old colour'.
  428.  
  429.       Gamma (Gamma-correction): Each colour-component is translated to a new
  430.       colour using the formula:   NewCol = (OldCol ^ Gamma)
  431.       Gamma is set using the two up- and down-icons.
  432.       Gamma-correction is particually useful on scanned/digitized images.
  433.  
  434.       P-lin: Basically the same as Gamma-corr. You can adjust the curve by
  435.       clicking SELECT on it.
  436.  
  437.       Step: Allows you to control the translation of each RGB value to a new
  438.       RGB-value.
  439.  
  440.  
  441.       Process.Invert
  442.       --------------
  443.       This will invert the image, giving a negative image.
  444.  
  445.       Process.Remove TINT
  446.       -------------------
  447.       This simply removes the bottom two bits (the TINT part) of all pixels in
  448.       the source image.
  449.  
  450.       Process.Brighten
  451.       ----------------
  452.       This adds a small amount to each of the colour components, giving a
  453.       brighter image.
  454.  
  455.       Process.Darken
  456.       --------------
  457.       The reverse of Brighten.
  458.  
  459.       Process.Black & White
  460.       ---------------------
  461.       Converts the image to black and white. The colour components are weighted
  462.       according to the selected colour, the median of the three components are
  463.       calculated, and if this is above 50% intensity, the pixel becomes white
  464.       otherwise it becomes black.
  465.  
  466.       Process.Greytones
  467.       -----------------
  468.       Converts the image to greytones. The colour components are weighted
  469.       according to the selected colour, the median of the three components are
  470.       calculated and this is used to select a greytone.
  471.       The sensitivity of the eye is approx. 3:5:1 (red,green,blue).
  472.  
  473.       Process.Threshold
  474.       -----------------
  475.       Converts the image to black and white using thresholding.
  476.       Thresholding means that any pixel with 2 or 3 colour components above the
  477.       selected colour will become white, the rest will become black.
  478.  
  479.       Process.Add colour
  480.       ------------------
  481.       Adds an variable amount of colour to the red, green and blue colour
  482.       components.
  483.  
  484.       Process.Sub colour
  485.       ------------------
  486.       The reverse of Add colour.
  487.  
  488.       Process.RGB filter
  489.       ------------------
  490.       This acts like a sort of coloured glass you put in front of the image.
  491.       If the glass is blue, only the blue parts of the image will pass thru
  492.       the glass.
  493.  
  494.       Process.Translate
  495.       -----------------
  496.       The colours in the destination image becomes a weighted sum of the
  497.       colour components from the source image, eg:
  498.          New RED = 30% Old RED + 60 % Old GREEN + 40% Old BLUE  (etc.)
  499.       Anything above 100% is cut off.
  500.  
  501.       Process.Shade
  502.       -------------
  503.       All colours are move towards the selected colour. How much they are
  504.       moved is set using the Effect slidebar in the colour selector.
  505.  
  506.       Process.Isolate
  507.       ---------------
  508.       This will turn all pixel black, except for those that are in the same
  509.       colour as the selected colour (these are turned white).
  510.  
  511.       Process.RGB separation.True colour
  512.       ----------------------------------
  513.       Process.RGB separation.8 bit per pixel
  514.       --------------------------------------
  515.       Works only if you've got 4 (or more) copies of the image.
  516.       Creates three copies of the source image, one with the red part of the
  517.       image, one with the green part and one with the blue part.
  518.       Actually, two version of this routine is available.
  519.       'True colour' will give you a red, a green and a blue image.
  520.       '8 bit per pixel' will give you three very ugly ill-looking images. These
  521.       images have 256 levels of red/green or blue, but these levels are mapped
  522.       directly to the bytes written to the screen. The effect of this can be
  523.       seen by displaying the image in greytones (see Miscellaneous.Options).
  524.       The 'true colour' version can also be applied by using
  525.        Process.RGB filter.Red/Green/Blue.
  526.  
  527.       Process.CMYK separation
  528.       -----------------------
  529.       Works only if you've got 5 (or more) copies of the image (see Options).
  530.       See 'RGB seperation'.
  531.  
  532.       Process.HSV separation
  533.       ----------------------
  534.       Works only if you've got 4 (or more) copies of the image.
  535.       Creates three images showing the values of Hue, Saturation and Value.
  536.       Not really very useful, but someone might find it interesting.
  537.  
  538.       Filters.Noise (weak)
  539.       --------------------
  540.       Noise removing filter. If the two neighbours of a pixel is in the same
  541.       colour, the center pixel becomes that colour too.
  542.  
  543.       Filters.Noise (strong)
  544.       ----------------------
  545.       The center pixel is compared with its neighbours to the left, right, top
  546.       and bottom. If the center pixel is the brightest of these, it becomes the
  547.       average of the four other pixels.
  548.  
  549.       Filters.Average
  550.       ---------------
  551.       Smoothen the image a lot.....
  552.       The center pixels becomes the average of colour of itself and its 8
  553.       neighbours. The kernel looks like this:
  554.                                                 1   1   1
  555.                                                 1   1   1
  556.                                                 1   1   1
  557.  
  558.       Filters.Sharpen
  559.       --------------
  560.       Sharpens the edges in an image.
  561.       Uses the following kernel:
  562.                                                 0  -1   1
  563.                                               - 1   5   1
  564.                                                 0  -1   0
  565.  
  566.       Filters.Smoothen (strong)
  567.       -------------------------
  568.       Doesn't smoothen the image quite as much a 'Average'.
  569.       Uses the following kernel:
  570.                                                 1   2   1
  571.                                                 2   4   2
  572.                                                 1   2   1
  573.  
  574.       Filters.Smoothen (weak)
  575.       -----------------------
  576.       Hardly doesn't smoothen the image at all.
  577.       Uses the following kernel:
  578.                                                 1   1   1
  579.                                                 1   24  1
  580.                                                 1   1   1
  581.  
  582.       Filters.Median
  583.       --------------
  584.       The center pixel becomes the median of the 8 surrounding pixels.
  585.  
  586.       Filters.Vertical edges
  587.       ----------------------
  588.       Detects vertical edges.
  589.       Uses the following kernel:
  590.                                                 1   0  -1
  591.                                                 2   0  -2
  592.                                                 1   0  -1
  593.  
  594.       Filters.Horizontal edges
  595.       ------------------------
  596.       Detects horizontal edges.
  597.       The kernel is simply the transposed of the one used for vertical edges.
  598.  
  599.       Filters.Edges
  600.       -------------
  601.       Detects edges of any orientation.
  602.       Kernel:                                   2   1   0
  603.                                                 1   0  -1
  604.                                                 0  -1  -2
  605.  
  606.       Filters.Minimum
  607.       ---------------
  608.       The minimum of the 9 pixels (the center pixel and its 8 neighbour) is
  609.       found, and this is the new colour of the center pixel.
  610.  
  611.       Filters.Maximum
  612.       ---------------
  613.       As 'Minimum', except it finds the maximum.
  614.  
  615.       Filters.Difference
  616.       ------------------
  617.       My own invention! If the difference between the center pixel and the
  618.       average of the 8 others is larger than the selected colour, the average
  619.       is used, otherwise the pixel is left unchanged.
  620.  
  621.  
  622.       Effects.Scratch
  623.       ---------------
  624.       Gives the impression that the surface of the image was scratched with a
  625.       nail while the paint was still wet.
  626.  
  627.       Effects.Ripple
  628.       --------------
  629.       An old-time favourite of all demo-makers.
  630.       If the 'Double' option is on, a special ripple will be used... 
  631.  
  632.       Effects.Trace edges
  633.       -------------------
  634.       If the distance between any of the three colour component (for any two
  635.       adjectant pixels) are greater than the selected minimum distance, the
  636.       pixels are said to lie on an edge and are coloured black (the rest is
  637.       coloured white).
  638.  
  639.       Effects.Mosaic
  640.       --------------
  641.       Select this, then click somewhere in the bottom left corner of the source
  642.       image window, and see what happens. Abort by clicking MENU or ADJUST.
  643.  
  644.       Effects.Pointillise
  645.       -------------------
  646.       Dots, Overlap, Wild : Try them, perhaps you'll like them.
  647.  
  648.       Effects.Twist
  649.       -------------
  650.       Experiment......
  651.  
  652.       Effects.Extend area
  653.       -------------------
  654.       Any white or black area (blob) in the image will be extended by adding a
  655.       new set of white or black pixels all around its border.
  656.  
  657.       Effects.Add noise
  658.       -----------------
  659.       A simple yet effective noise generator. Adds noise to either the source
  660.       or the destination image.
  661.       Higher intensity means more noise, but due to the primitive nature of the
  662.       noise-generator the position of the noisy pixels will rapidly begin to
  663.       repeat themself.
  664.  
  665.       Effects.Cycle bytes
  666.       -------------------
  667.       Adds/subtracts 1 from each byte in source image, and writes the byte to
  668.       the destination image.
  669.  
  670.       If Repeatedly is selected (ticked) the bytes in the destination image
  671.       will be cycled repeatedly until you click MENU.
  672.       Works only in 256 colour modes (for speed reasons).
  673.       If Multi-tasking is selected, the colour cycling will multitask, and
  674.       stops when you click any of the mouse buttons over any window/icon that
  675.       belongs to !Process.
  676.  
  677.       Effects.Mask
  678.       ------------
  679.       Only those pixels that are black on the destination image will be copied
  680.       from the source image, the rest will be left unchanged.
  681.  
  682.       Effects.Mix colours
  683.       -------------------
  684.       Mixes the colours randomly.
  685.  
  686.       Effects.Wheel
  687.       -------------
  688.       Basically, this is just a left-over from the Distort-routine (see More
  689.       tools). You select an area (triangular) and a circle, and 9 copies of the
  690.       triangle are then distorted to fill the circle.
  691.  
  692.       Effects.Squash.Circle
  693.       ---------------------
  694.       Squashed the image to fit inside a circle.
  695.       
  696.       Effects.Squash.Triangle
  697.       -----------------------
  698.       See above. Works with all images.
  699.       
  700.       Effects.Whirl.Whirl
  701.       -------------------
  702.       Hmm, not really that easy to explain, but...
  703.       A kind of rotation. The rotation angle depends on the distance from the
  704.       center fo the image. The routine is quite slow (10000 pixels/second) due
  705.       the the amount of maths that is required.
  706.       The rotation angle increses when you get closer to the center of the
  707.       image.
  708.  
  709.       Effects.Whirl.Son of Whirl
  710.       --------------------------
  711.       Like above, just different!
  712.       The rotation angle decreases when you get closer to the center of the
  713.       image.
  714.  
  715.       Effects.Whirl.Whirl revisited
  716.       -----------------------------
  717.       Like above and the one above that one, but again it's different from
  718.       the other one and from the other other one coz otherwise there wouldn't
  719.       really be any meaning in including this effect or the one above it.
  720.       Has a small bug that causes black rings to occur if the angle is <30.
  721.  
  722.       
  723.       Arithmetic
  724.       ----------
  725.       These options perform arithmetic and logical operations on pairs of
  726.       pixels from the source and destination images. The result is written to
  727.       the destination image as always.
  728.  
  729.       Arithmetic.Source + Dest
  730.       ------------------------
  731.       The destination image becomes the sum of the two images.
  732.  
  733.       Arithmetic.Source - Dest
  734.       ------------------------
  735.       See above.
  736.  
  737.       Arithmetic.Dest - Source
  738.       ------------------------
  739.       See above.
  740.  
  741.       Arithmetic.Source EOR Dest
  742.       --------------------------
  743.       The two pixels are EORed bit by bit.
  744.  
  745.       Arithmetic.Source AND Dest
  746.       --------------------------
  747.       The two pixels are ANDed.
  748.  
  749.       Arithmetic.Source OR Dest
  750.       -------------------------
  751.       The two pixels are ORed.
  752.  
  753.       Arithmetic.Source = Dest
  754.       ------------------------
  755.       The destination pixel becomes white if the source pixel is in the same
  756.       colour as the old destination pixel, otherwise it becomes black.
  757.  
  758.       Arithmetic.Source <> Dest
  759.       -------------------------
  760.       The destination pixel becomes white if the source-pixel is in a different
  761.       colour than the old destination pixel.
  762.  
  763.       Arithmetic.Source < Dest
  764.       ------------------------
  765.       See above.
  766.  
  767.       Arithmetic.Source > Dest
  768.       ------------------------
  769.       See above.
  770.  
  771.       Arithmetic.MAX(Source;Dest)
  772.       ---------------------------
  773.       The new pixel is coloured as the maximum of each of the three colour
  774.       components.
  775.  
  776.       Arithmetic.MIN(Source;Dest)
  777.       ---------------------------
  778.       As 'MAX(Source;Dest)', except it uses the minimum.
  779.  
  780.       Arithmetic.Overlay
  781.       ------------------
  782.       The destination image is used as a RGB-filter for the source image:
  783.       White is transparent, black is non-transparent, red allows red colour to
  784.       pass thru the filter etc.
  785.       Destination RED = (Source RED * Destination RED)/256
  786.  
  787.       Arithmetic.Combine
  788.       ------------------
  789.       The destination image becomes a weighted average of the two images, the
  790.       weight is set in the sub-window to this option.
  791.       The weight is a number from 0-255, and is used like this:
  792.       Dest RED = ((255-Weight) * Source RED  +  Weight * Dest RED)/255
  793.       Thus weight=0 will copy the source image to the destination image, and
  794.       weight=255 will leave the destination image unaltered.
  795.  
  796.       Arithmetic.ABS(Source - Dest)
  797.       -----------------------------
  798.       See 'Source - Dest'.
  799.  
  800.  
  801.       More tools.Clear
  802.       ----------------
  803.       An easy way of clearing either the source or destination image.
  804.  
  805.       More tools.Flip about X-axis
  806.       ----------------------------
  807.       Flip the source/destination image about the X-axis.
  808.  
  809.       More tools.Flip about Y-axis
  810.       ----------------------------
  811.       Flip the source/destination image about the Y-axis.
  812.  
  813.       More tools.Rotate
  814.       -----------------
  815.       The destination image becomes a rotated copy of the source image.
  816.       Rotation is anti-clockwise, and if an area is selected only that part of
  817.       the image will be rotated.
  818.  
  819.       More tools.Shading.Radial to black
  820.       ----------------------------------
  821.       This generates a radial shading from the selected colour to black. The
  822.       area affected is selected using the usual rubberband-circle. The colour
  823.       outside the circle becomes black (hence the name 'to black'). Note that
  824.       although you select the circle in the source window, the shading will
  825.       appear in the destination image. The reason for this is that this tool
  826.       is meant to be follow by Arithmetic.Overlay to create a shading of the
  827.       whole image.
  828.  
  829.       More tools.Shading.Radial to white
  830.       ----------------------------------
  831.       See above.
  832.  
  833.       More tools.Shading.Radial from black
  834.       ------------------------------------
  835.       See above.
  836.  
  837.       More tools.Shading.Radial from white
  838.       ------------------------------------
  839.       See above.
  840.  
  841.       More tools.Shading.Linear to black
  842.       ----------------------------------
  843.       As the 'More tools.Shading.Radial ....' tools, but performs a linear
  844.       shading.
  845.  
  846.       More tools.Shading.Linear to white
  847.       ----------------------------------
  848.       See above.
  849.  
  850.       More tools.Shading.Use dithering
  851.       --------------------------------
  852.       This toggles whether the shading tools should use dithering to increase
  853.       the number of shade or not. The image quality is greatly improved when
  854.       dithering is ON, but the dithering makes it much harder to process the
  855.       image afterwards.
  856.  
  857.       More tools.Distort triangle
  858.       ---------------------------
  859.       This allows you to specify two triangles and then distort the first one
  860.       to fit into the second one. The triangle will be read from the source
  861.       image, and is written to the destination image.
  862.  
  863.       More tools.Distort quadrangle
  864.       -----------------------------
  865.       Allows you to distort (almost) any four sided shape.
  866.  
  867.       More tools.Smudge
  868.       -----------------
  869.       Basically, this is just RECTANGLE x1,y1,s TO x2,y2, but it looks good
  870.       anyway, doesn't it?
  871.  
  872.       Save image
  873.       ----------
  874.       All images can be saved in the usual way. When you save an image from any
  875.       of the image viewers, the new spritefile becomes the 'last saved image'
  876.       for that particular image viewer, which means that it is this file that
  877.       will be loaded by the 'Reload last' option.
  878.       The images can only be saved as sprites, with or without a palette with
  879.       256 entries. This format is only understood by Translator, ChangeFSI and
  880.       a few other programs. !Paint in RISC OS 2 doesn't recognise the palette,
  881.       but RISC OS 3 !Paint does.
  882.  
  883.  
  884.       Zoom
  885.       ----
  886.       The images can be shown in any magnification from 10% to 1999%.
  887.  
  888.  
  889.       The other menu that hasn't been mentioned yet
  890.       =============================================
  891.       This menu appears when you click MENU over an image viewer that contains
  892.       neither the source image nor the destination image.
  893.  
  894.       Use as source
  895.       -------------
  896.       Will select the image as the new source image.
  897.  
  898.       Use as destination
  899.       ------------------
  900.       See above.
  901.  
  902.       Copy.Copy from source
  903.       ---------------------
  904.       This entry (and the three entries below) allows you to copy the image to
  905.       either the source or the destination image.
  906.  
  907.       Copy.Copy from destination
  908.       --------------------------
  909.  
  910.       Copy.Copy to source
  911.       -------------------
  912.  
  913.       Copy.Copy to destination
  914.       ------------------------
  915.  
  916.       Reload last
  917.       -----------
  918.       See Misc.Reload last
  919.  
  920.       Save image
  921.       ----------
  922.       See above.
  923.  
  924.       Zoom
  925.       ----
  926.       See above.
  927.  
  928.  
  929.    Known problems, bugs and unfinished things
  930.   ============================================
  931.    The filters doesn't work on the pixels on the edges of the image/selected
  932.  area. This isn't a bug, it was just so much easier and faster to do it that
  933.  way.......
  934.    Redrawing isn't always correct after using the rubberband tools (circle,
  935.  lines, rectangles etc.) outside a selected area.
  936.    The Distort triangle/Distort quadrilateral routine sometimes produces
  937.  really weird results. I haven't yet found out why (or when) but I think it
  938.  has got something to do with the corners of the shape being selected
  939.  clockwise or anti-clockwise.
  940.    The Distort quadrangle doesn't allow shapes where any of the interior
  941.  angles are > 180 (deg.). It doesn't generate an error, it just doesn't give
  942.  the expected result.
  943.    A small bug prevents !Process from displaying some spritefiles if the sprite-
  944.  file header isn't entirely correct, eg. word #3 is invalid, although this
  945.  doesn't cause problems with !Paint.
  946.    The whirl effect-family may fail on very large image or when using very
  947.  small angles.
  948.  
  949. ------------------------------------------------------------------------------
  950.  
  951.    Henrik Bjerregaard Pedersen
  952.    Stengaards Alle 13 B
  953.    DK-2800 Lyngby
  954.    Denmark
  955.  
  956.    Phone (+45) 42 88 37 56
  957.